home *** CD-ROM | disk | FTP | other *** search
/ Programming an RTS Game with Direct3D / Programming an RTS Game with Direct3D.iso / Examples / Chapter 14 / Example 14.1 / Debug / Shaders / objects.vs < prev    next >
Encoding:
Text File  |  2006-06-22  |  1.4 KB  |  49 lines

  1. //////////////////////////////////////////////////////////////////////////
  2. //                                                                      //
  3. //                    Terrain Object Vertexshader                       //
  4. //                                                                      //
  5. //                    Written by C. Granberg, 2006                      //
  6. //                                                                      //
  7. //////////////////////////////////////////////////////////////////////////
  8.  
  9. uniform extern float4x4 matW;
  10. uniform extern float4x4 matVP;
  11. uniform extern float3 DirToSun;
  12. uniform extern float3 mapSize;
  13.  
  14. struct VS_INPUT1
  15. {
  16.    float4 position : POSITION0;
  17.    float3 normal : NORMAL0;
  18.    float2 uv : TEXCOORD0;
  19. };
  20.  
  21. struct VS_OUTPUT1
  22. {
  23.    float4 position : POSITION0;
  24.    float2 uv : TEXCOORD0;
  25.    float2 uv2 : TEXCOORD1;
  26.    float  shade : TEXCOORD2;
  27. };
  28.  
  29. VS_OUTPUT1 Main(VS_INPUT1 input)
  30. {
  31.    VS_OUTPUT1 output = (VS_OUTPUT1)0;
  32.  
  33.    //transform World, View and Projection
  34.    float4 temp = mul(input.position, matW);
  35.    output.position = mul(temp, matVP);
  36.    input.normal = mul(input.normal, matW);
  37.  
  38.    //Directional Lighting
  39.    output.shade = max(0.0f, dot(normalize(input.normal), DirToSun));
  40.    output.shade = 0.2f + output.shade * 0.8f;
  41.  
  42.    //Set UV coordinates
  43.    output.uv = input.uv;
  44.    output.uv2 = float2(temp.x / mapSize.x, -temp.z / mapSize.y);
  45.  
  46.    return output;
  47. }
  48.  
  49.